home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / MONITOR / TOPOGRAF.ARJ / TOPOGRAF.BAS < prev    next >
BASIC Source File  |  1992-03-21  |  5KB  |  236 lines

  1.     DEFINT A-Z
  2.     BLUINC& = 65536
  3.     GRNINC = 256
  4.     REDINC = 1
  5.     PALETTE
  6.     OPTION BASE 1
  7.  
  8.     RANDOMIZE TIMER
  9.  
  10.     INPUT.DATA$ = "00000"
  11.  
  12.     DO
  13.  
  14.         FIRST.FILE$ = ""
  15.         FIRST.FILE$ = COMMAND$
  16.         IF LEN(FIRST.FILE$) < 8 THEN
  17.             FIRST.FILE$ = "30091.30S"
  18.         END IF
  19.  
  20.     LOOP WHILE INSTR(FIRST.FILE$, ".30S") = 0
  21.  
  22.     COLOR 7, 1
  23.     CLS
  24.     COLOR 15, 1
  25.  
  26.     INPUT.LAT% = VAL(LEFT$(FIRST.FILE$, 2))
  27.     INPUT.LONG% = VAL(MID$(FIRST.FILE$, 3, 3))
  28.  
  29.     MIN.VAL% = 25000
  30.     MAX.VAL% = 0
  31.  
  32.     FOR LATITUDE% = INPUT.LAT% TO (INPUT.LAT% + 1)
  33.  
  34.         FOR LONGITUDE% = (INPUT.LONG% - 2) TO INPUT.LONG%
  35.  
  36.             FILE.LAT$ = LTRIM$(STR$(LATITUDE%))
  37.             FILE.LONG$ = LTRIM$(STR$(LONGITUDE%))
  38.  
  39.             IF LONGITUDE% < 10 THEN
  40.                 FILE.LONG$ = "0" + FILE.LONG$
  41.             END IF
  42.             IF LONGITUDE% < 100 THEN
  43.                 FILE.LONG$ = "0" + FILE.LONG$
  44.             END IF
  45.             INPUT.FILE$ = FILE.LAT$ + FILE.LONG$ + ".30S"
  46.  
  47.             OPEN INPUT.FILE$ FOR BINARY AS #1
  48.  
  49.             LOCATE 10, 20
  50.             PRINT SPACE$(32)
  51.             LOCATE 10, 20
  52.             PRINT " READING DATA-FILE : "; INPUT.FILE$; " "
  53.  
  54.             DO
  55.                 GOSUB KEYCHECK
  56.  
  57.                 GET #1, , INPUT.DATA$
  58.  
  59.                 INPUT.VAL% = VAL(INPUT.DATA$)
  60.  
  61.                 SELECT CASE INPUT.VAL%
  62.                     CASE IS < MIN.VAL%
  63.                         MIN.VAL% = INPUT.VAL%
  64.                     CASE IS > MAX.VAL%
  65.                         MAX.VAL% = INPUT.VAL%
  66.                 END SELECT
  67.  
  68.             LOOP WHILE NOT EOF(1)
  69.  
  70.             CLOSE #1
  71.         NEXT
  72.  
  73.         LOCATE 12, 15
  74.         PRINT SPACE$(55)
  75.         LOCATE 12, 15
  76.         PRINT " MAX ALTITUDE : "; STR$(MAX.VAL%); "    MIN ALTITUDE : "; STR$(MIN.VAL%); " "
  77.  
  78.     NEXT
  79.  
  80.     SLEEP 2
  81.  
  82.     ALTITUDE.RANGE% = MAX.VAL% - MIN.VAL%
  83.  
  84.     ALTITUDE.INC% = 20
  85.  
  86.     SELECT CASE ALTITUDE.RANGE%
  87.         CASE IS > 5100
  88.             ALTITUDE.INC% = 40
  89.         CASE IS > 10200
  90.             ALTITUDE.INC% = 60
  91.         CASE IS > 15300
  92.             ALTITUDE.INC% = 80
  93.     END SELECT
  94.  
  95.     ROW.NO% = 0
  96.  
  97.     SCREEN 13
  98.     CLS
  99.  
  100. TOP:
  101.  
  102.     MIN.COLOR% = 1
  103.     MAX.COLOR% = 255
  104.     GOSUB SHIFTER
  105.  
  106.     MAX.COLOR% = 0
  107.     MIN.COLOR% = 255
  108.  
  109.     FOR LATITUDE% = INPUT.LAT% TO (INPUT.LAT% + 1)
  110.  
  111.         FILE.ROW% = 200 - (ROW.NO% * 120)
  112.         ROW.NO% = ROW.NO% + 1
  113.         COL.NO% = 0
  114.  
  115.         FOR LONGITUDE% = (INPUT.LONG% - 2) TO INPUT.LONG%
  116.  
  117.             FILE.COL% = (COL.NO% * 120) + 1
  118.             COL.NO% = COL.NO% + 1
  119.  
  120.             FILE.LAT$ = LTRIM$(STR$(LATITUDE%))
  121.             FILE.LONG$ = LTRIM$(STR$(LONGITUDE%))
  122.             IF LONGITUDE% < 10 THEN
  123.                 FILE.LONG$ = "0" + FILE.LONG$
  124.             END IF
  125.             IF LONGITUDE% < 100 THEN
  126.                 FILE.LONG$ = "0" + FILE.LONG$
  127.             END IF
  128.             INPUT.FILE$ = FILE.LAT$ + FILE.LONG$ + ".30S"
  129.  
  130.             OPEN INPUT.FILE$ FOR BINARY AS #1
  131.  
  132.             INPUT.RECORD% = 0
  133.  
  134.             DO
  135.                 GOSUB KEYCHECK
  136.  
  137.                 GET #1, , INPUT.DATA$
  138.  
  139.                 INPUT.VAL% = VAL(INPUT.DATA$)
  140.  
  141.                 CLR% = 255 - ABS(CINT((MIN.VAL% - INPUT.VAL%) / ALTITUDE.INC%) + 1)
  142.                 IF INPUT.VAL% = 0 THEN
  143.                     CLR% = 0
  144.                 ELSE
  145.                     IF CLR% < MIN.COLOR% THEN
  146.                         MIN.COLOR% = CLR%
  147.                     END IF
  148.                 END IF
  149.                 IF CLR% > MAX.COLOR% THEN
  150.                     MAX.COLOR% = CLR%
  151.                 END IF
  152.  
  153.                 ROW% = FILE.ROW% - (INT((INPUT.RECORD% / 120)))
  154.                 COL% = (INPUT.RECORD% MOD 120) + FILE.COL%
  155.  
  156.                 IF ROW% > 0 AND ROW% < 199 AND COL% > 0 AND COL% < 319 THEN
  157.                     PSET (COL%, ROW%), CLR%
  158.                 END IF
  159.  
  160.                 INPUT.RECORD% = INPUT.RECORD% + 1
  161.  
  162.             LOOP WHILE NOT EOF(1)
  163.  
  164.             CLOSE #1
  165.  
  166.         NEXT
  167.  
  168.     NEXT
  169.  
  170.     CLOSE #2
  171.  
  172.     DO
  173.         GOSUB KEYCHECK
  174.  
  175.         GOSUB SHIFTER
  176.  
  177.     LOOP
  178.  
  179. SHIFTER:
  180.  
  181.     RINC% = 1
  182.     GINC% = 1
  183.     BINC% = 1
  184.  
  185.     R% = INT(RND * 40) + 20
  186.     G% = INT(RND * 40) + 20
  187.     B% = INT(RND * 40) + 20
  188.  
  189.     FOR COLR% = MIN.COLOR% TO MAX.COLOR%
  190.         R% = R% + RINC
  191.         IF R% > 61 OR R% < 10 THEN
  192.             RINC% = -RINC%
  193.         END IF
  194.         B% = B% + BINC%
  195.         IF B% > 61 OR B% < 10 THEN
  196.             BINC% = -BINC%
  197.         END IF
  198.         G% = G% + GINC%
  199.         IF G% > 61 OR G% < 10 THEN
  200.             GINC% = -GINC%
  201.         END IF
  202.         PALETTE COLR%, ((B% * BLUINC&) + (G% * GRNINC%) + (R% * REDINC%))
  203.     NEXT
  204.  
  205.     RETURN
  206.  
  207. KEYCHECK:
  208.  
  209.     KY$ = INKEY$
  210.  
  211.     IF KY$ = CHR$(27) THEN
  212.         SCREEN 0
  213.         CLS
  214.         SYSTEM
  215.     END IF
  216.  
  217.     IF LEN(KY$) THEN
  218.  
  219.         SELECT CASE UCASE$(KY$)
  220.             CASE "C"
  221.                 CLS
  222.             CASE "P"
  223.                 WHILE INKEY$ = ""
  224.                 WEND
  225.             CASE "R"
  226.                 GOTO TOP
  227.             CASE "S"
  228.                 GOSUB SHIFTER
  229.             CASE ELSE
  230.         END SELECT
  231.  
  232.     END IF
  233.  
  234.     RETURN
  235.  
  236.